--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
tests/backend/test_android_rnode.py 3f7ef731b5effd9aa3a81eceea66fd6c2b56498c (3f7ef731) Text, 2.49 KB
T8b949e# SPDX-License-Identifier: 0BSD
Tff7b72import T7ee787pytest
Tff7b72from T7ee787meshchatxT7ee787.T7ee787meshchat Tff7b72import Te6edf3ReticulumMeshChat
Tff7b72def Td2a8fftest_disable_rnode_interfaces_on_androidTb4b4b4(Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
T8b949e"""Unconditional disable helper still clears RNode interfaces on Android."""
Te6edf3config_path Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffconfigTa5d6ff"
Te6edf3config_pathTff7b72.Td2a8ffwrite_textTb4b4b4(
T8b949e"""[reticulum]
enable_transport = False
[interfaces]
[[RNode Serial]]
type = RNodeInterface
interface_enabled = True
port = /dev/ttyUSB0
frequency = 867200000
bandwidth = 125000
txpower = 7
spreadingfactor = 8
codingrate = 5
[[TCP Client]]
type = TCPClientInterface
interface_enabled = True
target_host = localhost
target_port = 4242
"""Tb4b4b4,
Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72with Te6edf3pytestTff7b72.Td2a8ffMonkeyPatchTff7b72.Td2a8ffcontextTb4b4b4(Tb4b4b4) Tff7b72as Te6edf3mpTb4b4b4:
Te6edf3mpTff7b72.Td2a8ffsetattrTb4b4b4(
Ta5d6ff"Ta5d6ffmeshchatx.meshchat._is_chaquopy_androidTa5d6ff"Tb4b4b4,
Tff7b72lambdaTb4b4b4: Tff7b72TrueTb4b4b4,
Tb4b4b4)
Te6edf3modified Tff7b72= Te6edf3ReticulumMeshChatTff7b72.Td2a8ff_disable_rnode_interfaces_on_androidTb4b4b4(
Tffa657strTb4b4b4(Te6edf3config_pathTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3modified Tff7b72is Tff7b72True
Te6edf3content Tff7b72= Te6edf3config_pathTff7b72.Td2a8ffread_textTb4b4b4(Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)
Tff7b72assert Ta5d6ff"Ta5d6ffinterface_enabled = falseTa5d6ff" Tff7b72in Te6edf3content
Tff7b72assert Ta5d6ff"Ta5d6fftype = RNodeInterfaceTa5d6ff" Tff7b72in Te6edf3content
Tff7b72assert Ta5d6ff"Ta5d6fftype = TCPClientInterfaceTa5d6ff" Tff7b72in Te6edf3content
Tff7b72def Td2a8fftest_disable_rnode_interfaces_skips_when_not_androidTb4b4b4(Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
Te6edf3config_path Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffconfigTa5d6ff"
Te6edf3config_pathTff7b72.Td2a8ffwrite_textTb4b4b4(
T8b949e"""[interfaces]
[[RNode Serial]]
type = RNodeInterface
interface_enabled = True
"""Tb4b4b4,
Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72with Te6edf3pytestTff7b72.Td2a8ffMonkeyPatchTff7b72.Td2a8ffcontextTb4b4b4(Tb4b4b4) Tff7b72as Te6edf3mpTb4b4b4:
Te6edf3mpTff7b72.Td2a8ffsetattrTb4b4b4(
Ta5d6ff"Ta5d6ffmeshchatx.meshchat._is_chaquopy_androidTa5d6ff"Tb4b4b4,
Tff7b72lambdaTb4b4b4: Tff7b72FalseTb4b4b4,
Tb4b4b4)
Te6edf3modified Tff7b72= Te6edf3ReticulumMeshChatTff7b72.Td2a8ff_disable_rnode_interfaces_on_androidTb4b4b4(
Tffa657strTb4b4b4(Te6edf3config_pathTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3modified Tff7b72is Tff7b72False
Te6edf3content Tff7b72= Te6edf3config_pathTff7b72.Td2a8ffread_textTb4b4b4(Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)
Tff7b72assert Ta5d6ff"Ta5d6ffinterface_enabled = TrueTa5d6ff" Tff7b72in Te6edf3content
Tff7b72def Td2a8fftest_disable_rnode_interfaces_handles_missing_configTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72with Te6edf3pytestTff7b72.Td2a8ffMonkeyPatchTff7b72.Td2a8ffcontextTb4b4b4(Tb4b4b4) Tff7b72as Te6edf3mpTb4b4b4:
Te6edf3mpTff7b72.Td2a8ffsetattrTb4b4b4(
Ta5d6ff"Ta5d6ffmeshchatx.meshchat._is_chaquopy_androidTa5d6ff"Tb4b4b4,
Tff7b72lambdaTb4b4b4: Tff7b72TrueTb4b4b4,
Tb4b4b4)
Te6edf3modified Tff7b72= Te6edf3ReticulumMeshChatTff7b72.Td2a8ff_disable_rnode_interfaces_on_androidTb4b4b4(
Ta5d6ff"Ta5d6ff/nonexistent/configTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3modified Tff7b72is Tff7b72False
Tff7b72def Td2a8fftest_get_android_external_files_dir_returns_none_on_desktopTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72from T7ee787meshchatxT7ee787.T7ee787android_push_bridge Tff7b72import Te6edf3_get_android_external_files_dir
Tff7b72assert Te6edf3_get_android_external_files_dirTb4b4b4(Tb4b4b4) Tff7b72is Tff7b72None
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────